#!/bin/bash

# Eagle Blog Database Test Script for Linux
# 使用方法: ./scripts/test-db.sh

set -e

echo "========================================"
echo "Eagle Blog Database Test"
echo "========================================"
echo

# 检查 MySQL 客户端
echo "[1/4] 检查 MySQL 客户端..."
if ! command -v mysql &> /dev/null; then
    echo "错误: 未找到 MySQL 客户端"
    echo "请安装 MySQL 客户端:"
    echo "  Ubuntu/Debian: sudo apt-get install mysql-client"
    echo "  CentOS/RHEL: sudo yum install mysql"
    exit 1
fi
echo "✓ MySQL 客户端已安装"

# 检查 Docker 服务
echo "[2/4] 检查 Docker 服务..."
if ! command -v docker &> /dev/null; then
    echo "警告: 未找到 Docker，将尝试直接连接 MySQL"
    MYSQL_HOST=${MYSQL_HOST:-localhost}
    MYSQL_PORT=${MYSQL_PORT:-3306}
    MYSQL_USER=${MYSQL_USER:-root}
    MYSQL_PASSWORD=${MYSQL_PASSWORD:-123456}
else
    echo "✓ Docker 已安装"
    
    # 检查数据库容器
    echo "[3/4] 检查数据库容器..."
    if ! docker ps | grep -q "eagle-db"; then
        echo "数据库容器未运行，尝试启动..."
        cd deploy/docker-compose
        docker-compose up -d db redis
        echo "等待数据库启动..."
        sleep 10
        cd ../..
    fi
    echo "✓ 数据库容器已运行"
    
    MYSQL_HOST=${MYSQL_HOST:-localhost}
    MYSQL_PORT=${MYSQL_PORT:-3306}
    MYSQL_USER=${MYSQL_USER:-root}
    MYSQL_PASSWORD=${MYSQL_PASSWORD:-123456}
fi

# 测试数据库连接
echo "[4/4] 测试数据库连接..."
if ! mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "SELECT 1;" &> /dev/null; then
    echo "错误: 无法连接到数据库"
    echo "请检查:"
    echo "1. MySQL 服务是否启动"
    echo "2. 端口 $MYSQL_PORT 是否可用"
    echo "3. 用户名密码是否正确"
    echo "4. 环境变量设置:"
    echo "   MYSQL_HOST=$MYSQL_HOST"
    echo "   MYSQL_PORT=$MYSQL_PORT"
    echo "   MYSQL_USER=$MYSQL_USER"
    exit 1
fi
echo "✓ 数据库连接成功"

# 检查数据库是否存在
echo
echo "检查数据库 eagle_blog..."
if ! mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "USE eagle_blog;" &> /dev/null; then
    echo "数据库 eagle_blog 不存在，是否要初始化? (Y/n)"
    read -r response
    if [[ ! "$response" =~ ^[Nn]$ ]]; then
        echo "初始化数据库..."
        mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" < deploy/database/init.sql
        if [ $? -ne 0 ]; then
            echo "错误: 数据库初始化失败"
            exit 1
        fi
        echo "✓ 数据库初始化成功"
    else
        echo "跳过数据库初始化"
    fi
else
    echo "✓ 数据库 eagle_blog 已存在"
fi

# 显示数据库表
echo
echo "数据库表列表:"
mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "USE eagle_blog; SHOW TABLES;"

echo
echo "========================================"
echo "数据库测试完成!"
echo "========================================"
echo
echo "数据库连接信息:"
echo "- 主机: $MYSQL_HOST:$MYSQL_PORT"
echo "- 用户: $MYSQL_USER"
echo "- 数据库: eagle_blog"
echo
echo "默认测试账户:"
echo "- 用户名: admin, 密码: 123456"
echo "- 用户名: test, 密码: 123456"
echo
echo "现在可以使用 Eagle CLI 生成模型:"
echo "eagle model -t users -s User -f user.go"
echo 